/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.upc.dew.dewproject.repository.jdbc;

import edu.upc.dew.dewproject.domain.Alquiler;
import edu.upc.dew.dewproject.domain.Cliente;
import edu.upc.dew.dewproject.domain.Titulo;
import edu.upc.dew.dewproject.repository.AlquilerRepository;


import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;


/**
 *
 * @author BRIAN
 */
@Repository
public class AlquilerRepositoryJDBC extends SimpleJdbcDaoSupport implements AlquilerRepository{

	final String  queryAlquiler="select ID_ALQUILER, FECHA_ALQUILER, FECHA_DEVOLUCION, c.NOMBRE as nombre, GARANTIA, ESTADO, OBSERVACIONES, COBRADO from TB_ALQUILER a inner join  TB_CLIENTES  c on a.ID_CLIENTE=c.ID_CLIENTE";
	final String  updateAlquiler="UPDATE TB_ALQUILER SET estado = ? where ID_ALQUILER = ?";
	
	SimpleJdbcInsert newRegister = new SimpleJdbcInsert(getJdbcTemplate()).withTableName("TB_ALQUILER").usingColumns(columNames.toArray(new String[columNames.size()]));
               Map<String, Object> parameters= new HashMap<String, Object>(columNames.size());
               
                       for(int i=0 ; i<columNames.size();i++ ){
                               parameters.put(columNames.get(i), columValues.get(i));
                       }
                
               newRegister.execute(parameters);
	@Autowired
	   public AlquilerRepositoryJDBC(JdbcTemplate jdbcTemplate  ){
		   
		   setJdbcTemplate(jdbcTemplate);
		   
	   }
	
	 private static final class AlquilerMapper implements RowMapper {

	        public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
	            Alquiler alquiler = new Alquiler();
	            Cliente cliente = new Cliente();
	            alquiler.setId(rs.getInt("ID_ALQUILER"));
	            alquiler.setFechaAlquiler(rs.getDate("FECHA_ALQUILER"));
	            alquiler.setFechaDevolucion(rs.getDate("FECHA_DEVOLUCION"));
	            cliente.setNombre(rs.getString("nombre"));
	            alquiler.setGarantia(rs.getString("GARANTIA"));
	            alquiler.setEstado(rs.getString("ESTADO"));
	            alquiler.setObservaciones(rs.getString("OBSERVACIONES"));
	            alquiler.setCobrado(rs.getString("COBRADO").charAt(0));
	            
	            
	            return alquiler;
	        }
	    }
    public Alquiler buscarAlquiler(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

     
    public void registrarAlquiler(Alquiler alquiler) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    
    public void actualizarAlquiler(Alquiler alquiler) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    
    public void eliminarAlquiler(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    
    public List<Alquiler> listarAlquiler() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Alquiler> listarAlquiler(Integer id, String estado) {
		// TODO Auto-generated method stub
		return getSimpleJdbcTemplate().query(queryAlquiler+" where a.ID_CLIENTE = '"+id +"', ESTADO='"+estado+"' ",new AlquilerMapper());
	}

    public void actualizarEstadoAlquiler(int id, String estado) {
		
		try{
			int i=getSimpleJdbcTemplate().update(updateAlquiler, estado,id);
			logger.info("Cantidad "+ i);
		}catch (Exception e) {
			//System.out.println("Cantidad "+ e.getMessage());
			logger.error("Cantidad "+ e.getMessage());
		}
		
	}
}
